home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / xsw / xprocs.c < prev    next >
C/C++ Source or Header  |  1995-05-09  |  28KB  |  990 lines

  1. /*
  2.  *    @(#) xprocs.c 9.3 93/09/17 SCOINC
  3.  */
  4. /***************************************************************************
  5.  *
  6.  *    Copyright (c) 1990-1993        The Santa Cruz Operation, Inc.
  7.  *
  8.  *    All rights reserved.  No part of this program or publication may be
  9.  *    reproduced, transmitted, transcribed, stored in a retrieval system,
  10.  *    or translated into any language or computer language, in any form or
  11.  *    by any means, electronic, mechanical, magnetic, optical, chemical,
  12.  *    biological, or otherwise, without the prior written permission of:
  13.  *
  14.  *        The Santa Cruz Operation , Inc.        (408) 425-7222
  15.  *        400 Encinal St., Santa Cruz, California 95060 USA
  16.  *
  17.  **************************************************************************/
  18. /*
  19.  * Modification History
  20.  *
  21.  * S003, 15-Sep-93, rickra
  22.  *    Added support for disk space...
  23.  *
  24.  * S002, 27-May-93, rickra
  25.  *     Added support for pixmaps.
  26.  *
  27.  * S001, 01-Jan-93, rickra
  28.  *     Added support for seperate windows.
  29.  *    Added support for font change in help windows...
  30.  *    Added CBLOCKS color.
  31.  *
  32.  * S000, 30-Sep-92, rickra
  33.  *     Added copyright and modification history
  34.  *    Change hard coded color referneces to user configurable.
  35.  */
  36. /*+-------------------------------------------------------------------------
  37.     xprocs.c - XSW X interface (fonts, colors)
  38.  
  39.   Defined functions:
  40.     change_font(font_mode)
  41.     check_fonts()
  42.     init_MyFonts()
  43.     init_color()
  44.     get_color()
  45.  
  46. --------------------------------------------------------------------------*/
  47.  
  48. #include <stdio.h>
  49. #include <X11/StringDefs.h>
  50. #include <X11/Xlib.h>
  51. #include <X11/Xutil.h>
  52. #include <X11/Intrinsic.h>
  53. #include <X11/Shell.h>
  54. #include <Xm/Xm.h>
  55. #include <Xm/MainW.h>
  56. #include <Xm/DrawingA.h>
  57. #include <Xm/MessageB.h>
  58.  
  59.  
  60. #include "include/unixincs.h"
  61. #include "include/resources.h"
  62. #include "include/buttons.h"
  63. #include "include/xprocs.h"
  64. #include "include/xsw.h"
  65.  
  66. extern unsigned long StatCycle_msec;
  67.  
  68. extern int      current_Y_offset;
  69.  
  70. extern struct NetworkXswStruct *current_server;
  71.  
  72. extern Widget   sub_menu_state_list[Max_sub_menu_buttons];
  73.  
  74. extern Widget   toplevel;
  75.  
  76. extern Widget   general_help_widget;
  77. extern Widget   general_help_dialog;
  78.  
  79. extern Widget   options_help_widget;
  80. extern Widget   options_help_dialog;
  81.  
  82. extern Widget   known_help_widget;
  83. extern Widget   known_help_dialog;
  84.  
  85. extern char    *xsw_basename;
  86.  
  87.  
  88. int             got_basic_colors = 0;
  89.  
  90. XColor          colorBackground;
  91. XColor          colorForeground;
  92. XColor          colorLabel;
  93. XColor          colorDisplayMsg;
  94. XColor          colorUsers;
  95. XColor          colorTimeOfDay;
  96. XColor          colorInterval;
  97. XColor          colorActualInterval;
  98. XColor          colorActualIntervalWarning;
  99. XColor          colorActualIntervalAlarm;
  100. XColor          colorTitleBarFG;
  101. XColor          colorTitleBarBG;
  102. XColor          colorUser;
  103. XColor          colorKernel;
  104. XColor          colorBreak;
  105. XColor          colorIo;
  106. XColor          colorPio;
  107. XColor          colorSwap;
  108.  
  109. XColor          colorMemUsed;
  110. XColor          colorMemUsedWarning;
  111. XColor          colorMemUsedAlarm;
  112.  
  113. XColor          colorSwapUsed;
  114. XColor          colorSwapUsedWarning;
  115. XColor          colorSwapUsedAlarm;
  116.  
  117. XColor          colorAvailSwapUsed;
  118. XColor          colorAvailSwapUsedWarning;
  119. XColor          colorAvailSwapUsedAlarm;
  120.  
  121. XColor          colorNfile;
  122. XColor          colorNinode;
  123. XColor          colorNproc;
  124. XColor          colorNregion;
  125. XColor          colorNcblocks;
  126.  
  127. XColor          colorNfileWarning;
  128. XColor          colorNinodeWarning;
  129. XColor          colorNprocWarning;
  130. XColor          colorNregionWarning;
  131. XColor          colorNcblocksWarning;
  132.  
  133. XColor          colorNfileAlarm;
  134. XColor          colorNinodeAlarm;
  135. XColor          colorNprocAlarm;
  136. XColor          colorNregionAlarm;
  137. XColor          colorNcblocksAlarm;
  138.  
  139. XColor          colorCacheWriteHit;
  140. XColor          colorCacheReadHit;
  141. XColor          colorCacheWriteMiss;
  142. XColor          colorCacheReadMiss;
  143. XColor          colorCacheWriteMissWarning;
  144. XColor          colorCacheReadMissWarning;
  145. XColor          colorCacheWriteMissAlarm;
  146. XColor          colorCacheReadMissAlarm;
  147.  
  148. XColor          colorPSmem;
  149. XColor          colorPSmemGrowing;
  150. XColor          colorPSmemShrinking;
  151. XColor          colorPSmemNew;
  152.  
  153. XColor          colorPScpuIdle;
  154. XColor          colorPScpuActive;
  155. XColor          colorPScpuNew;
  156. XColor          colorPScpuRunning;
  157.  
  158. XColor          colorPSioIdle;
  159. XColor          colorPSioActive;
  160. XColor          colorPSioNew;
  161.  
  162. XColor          colorDiskspaceLosing;
  163. XColor          colorDiskspaceGaining;
  164. XColor          colorDiskspaceStable;
  165.  
  166. XColor          colorAuxButtonOnForeground;
  167. XColor          colorAuxButtonOnBackground;
  168. XColor          colorAuxButtonOffForeground;
  169. XColor          colorAuxButtonOffBackground;
  170.  
  171. XColor          colorNumeric;
  172. XColor          colorNumericWarning;
  173. XColor          colorNumericAlarm;
  174. XColor          colorStaticNumeric;
  175.  
  176. unsigned long   foreground;
  177. unsigned long   background;
  178.  
  179. int             max_font = 6;
  180.  
  181. static FontStructure font_list[] =
  182. {
  183.   {"fixed"},
  184.   {"6x10"},
  185.   {"6x12"},
  186.   {"6x13"},
  187.   {"8x13"},
  188.   {"9x15"},
  189.   {"ibm10x20"}
  190. };
  191.  
  192. void
  193. adjust_help_screens ()
  194.  
  195. {
  196.   Arg             args[32];
  197.   int             argcount;
  198.   Boolean         help_set;
  199.   Widget          parent_widget;
  200.  
  201.   XFontStruct    *Current_Font;
  202.   XmFontList      Font_List;
  203.  
  204. /*
  205.   If the general help screen is not sensitive, it must be on....
  206. */
  207.  
  208.   argcount = 0;
  209.   XtSetArg (args[argcount], XmNsensitive, &help_set);
  210.   argcount++;
  211.   XtGetValues (sub_menu_state_list[BUTTON_general_help], args, argcount);
  212.  
  213.   if (help_set == 0)
  214.     {
  215.       Current_Font = XLoadQueryFont (display, current_server -> font_name);
  216.  
  217.       Font_List = XmFontListCreate (Current_Font, XmSTRING_DEFAULT_CHARSET);
  218.  
  219.       argcount = 0;
  220.       XtSetArg (args[argcount], XmNfontList, Font_List);
  221.       argcount++;
  222.       XtSetValues (general_help_widget, args, argcount);
  223.  
  224.       parent_widget = XtParent (general_help_dialog);
  225.  
  226.       argcount = 0;
  227.       XtSetArg (args[argcount], XmNminWidth, FWIDTH * 80);
  228.       argcount++;
  229.       XtSetArg (args[argcount], XmNmaxWidth, FWIDTH * 80);
  230.       argcount++;
  231.       XtSetArg (args[argcount], XmNwidth, FWIDTH * 80);
  232.       argcount++;
  233.       XtSetValues (parent_widget, args, argcount);
  234.  
  235.  
  236.     }
  237.  
  238.   argcount = 0;
  239.   XtSetArg (args[argcount], XmNsensitive, &help_set);
  240.   argcount++;
  241.   XtGetValues (sub_menu_state_list[BUTTON_options_help], args, argcount);
  242.  
  243.   if (help_set == 0)
  244.     {
  245.       Current_Font = XLoadQueryFont (display, current_server -> font_name);
  246.  
  247.       Font_List = XmFontListCreate (Current_Font, XmSTRING_DEFAULT_CHARSET);
  248.  
  249.       argcount = 0;
  250.       XtSetArg (args[argcount], XmNfontList, Font_List);
  251.       argcount++;
  252.       XtSetValues (options_help_widget, args, argcount);
  253.  
  254.       parent_widget = XtParent (options_help_dialog);
  255.  
  256.       argcount = 0;
  257.       XtSetArg (args[argcount], XmNminWidth, FWIDTH * 80);
  258.       argcount++;
  259.       XtSetArg (args[argcount], XmNmaxWidth, FWIDTH * 80);
  260.       argcount++;
  261.       XtSetArg (args[argcount], XmNwidth, FWIDTH * 80);
  262.       argcount++;
  263.       XtSetValues (parent_widget, args, argcount);
  264.  
  265.  
  266.     }
  267.  
  268.   argcount = 0;
  269.   XtSetArg (args[argcount], XmNsensitive, &help_set);
  270.   argcount++;
  271.   XtGetValues (sub_menu_state_list[BUTTON_known_help], args, argcount);
  272.  
  273.   if (help_set == 0)
  274.     {
  275.       Current_Font = XLoadQueryFont (display, current_server -> font_name);
  276.  
  277.       Font_List = XmFontListCreate (Current_Font, XmSTRING_DEFAULT_CHARSET);
  278.  
  279.       argcount = 0;
  280.       XtSetArg (args[argcount], XmNfontList, Font_List);
  281.       argcount++;
  282.       XtSetValues (known_help_widget, args, argcount);
  283.  
  284.       parent_widget = XtParent (known_help_dialog);
  285.  
  286.       argcount = 0;
  287.       XtSetArg (args[argcount], XmNminWidth, FWIDTH * 80);
  288.       argcount++;
  289.       XtSetArg (args[argcount], XmNmaxWidth, FWIDTH * 80);
  290.       argcount++;
  291.       XtSetArg (args[argcount], XmNwidth, FWIDTH * 80);
  292.       argcount++;
  293.       XtSetValues (parent_widget, args, argcount);
  294.  
  295.  
  296.     }
  297.  
  298. }
  299.  
  300. int
  301. change_font (font_mode)
  302.      int             font_mode;
  303. {
  304.  
  305.   int             i, j;
  306.   Arg             args[32];
  307.   int             argcount;
  308.  
  309.   Dimension       shell_width, shell_height, shell_border_width;
  310.  
  311.   Boolean         help_set;
  312.   Widget          parent_widget;
  313.  
  314.   XFontStruct    *Current_Font;
  315.   XmFontList      Font_List;
  316.  
  317.   XmString        message;
  318.   Widget          dialog;
  319.  
  320.  
  321.   int             multiplier_H, old_height;
  322.  
  323.   int             Y_offset;
  324.  
  325. /* Turn off old font */
  326.  
  327. /*
  328.       printf ("In change_font\n");
  329. */
  330.  
  331.   if (current_server != NULL)
  332.     {
  333. /*
  334. printf ("In change_font2\n");
  335. */
  336.       argcount = 0;
  337.       XtSetArg (args[argcount], XmNset, False);
  338.       argcount++;
  339.       XtSetValues (sub_menu_state_list[first_font_button + current_server -> current_font], args,
  340.            argcount);
  341.  
  342.       current_server -> current_font = font_mode;
  343.  
  344.  
  345.       if (current_server -> have_res_font && (current_server -> current_font == 0))
  346.     current_server -> font_name = res.font;
  347.       else
  348.     current_server -> font_name = font_list[current_server -> current_font].font_name;
  349.  
  350.       if ((current_server -> My_font = XLoadFont (display, current_server -> font_name)) != BadName)
  351.     {
  352.  
  353.  
  354. /* Turn on new font */
  355.       if ((first_font_button + current_server -> current_font) > Max_sub_menu_buttons)
  356.         fprintf (stdout, "INTERNAL error # 3\n");
  357.       argcount = 0;
  358.       XtSetArg (args[argcount], XmNset, True);
  359.       argcount++;
  360.       XtSetValues (sub_menu_state_list[first_font_button + current_server -> current_font], args,
  361.                argcount);
  362.  
  363.       old_height = (current_server -> test_fonts -> ascent +
  364.             current_server -> test_fonts -> descent);
  365.  
  366.       current_server -> test_fonts = XQueryFont (display, current_server -> My_font);
  367.  
  368.  
  369.  
  370.       Y_offset = current_Y_offset;
  371.       current_Y_offset = Start_Y_offset;
  372.  
  373.  
  374.       for (i = 0; i < current_server -> current_items; i++)
  375.         {
  376.  
  377.           current_server -> DISPLAY_LIST[i].Y_offset = current_Y_offset;
  378.           current_Y_offset = current_Y_offset +
  379.         (FHEIGHT * current_server -> COMMAND_LIST[current_server -> DISPLAY_LIST[i].button_num].Y_mult);
  380.         }
  381.  
  382.  
  383.       for (i = 0; i < Max_state_buttons; i++)
  384.         {
  385.  
  386.           if (current_server -> SEPERATE_WINDOWS_LIST[i].already_created)
  387.  
  388.         {
  389.  
  390.           if (current_server -> SEPERATE_WINDOWS_LIST[i].window_type == DRAWING_WINDOW)
  391.             {
  392.               argcount = 0;
  393.               XtSetArg (args[argcount], XmNheight,
  394.                 &shell_height);
  395.               argcount++;
  396.               XtSetArg (args[argcount], XmNwidth,
  397.                 &shell_width);
  398.               argcount++;
  399.               XtSetArg (args[argcount], XmNborderWidth,
  400.                 &shell_border_width);
  401.               argcount++;
  402.               XtGetValues (
  403.                     current_server -> SEPERATE_WINDOWS_LIST[i].shell_widget,
  404.                     args, argcount);
  405.  
  406.  
  407.               XSetFont (
  408.              current_server -> SEPERATE_WINDOWS_LIST[i].display,
  409.                  current_server -> SEPERATE_WINDOWS_LIST[i].gc, current_server -> My_font);
  410.  
  411.               XSetForeground (current_server -> SEPERATE_WINDOWS_LIST[i].display,
  412.                       current_server -> SEPERATE_WINDOWS_LIST[i].gc, background);
  413.               XFillRectangle (current_server -> SEPERATE_WINDOWS_LIST[i].display,
  414.               current_server -> SEPERATE_WINDOWS_LIST[i].pixmap,
  415.             current_server -> SEPERATE_WINDOWS_LIST[i].gc, 0, 0,
  416.                current_server -> SEPERATE_WINDOWS_LIST[i].width,
  417.              current_server -> SEPERATE_WINDOWS_LIST[i].height);
  418.  
  419.               argcount = 0;
  420.               XtSetArg (args[argcount], XmNminWidth, (XtArgVal) SMALL_BOX_WIDTH);
  421.               argcount++;
  422.  
  423.               if ((i == BUTTON_ps_cpu) ||
  424.               (i == BUTTON_ps_io) ||
  425.               (i == BUTTON_ps_mem) ||
  426.               (i == BUTTON_disk_space)) 
  427.             {
  428.               XtSetArg (args[argcount], XmNminHeight,
  429.                     (XtArgVal) SMALL_BOX_HEIGHT);
  430.               argcount++;
  431.               XtSetArg (args[argcount], XmNmaxHeight,
  432.                 (XtArgVal) DisplayHeight (display, screen));
  433.               argcount++;
  434.  
  435.               XtSetArg (args[argcount], XmNmaxWidth,
  436.                  (XtArgVal) DisplayWidth(display, screen));
  437.               argcount++;
  438.                   XtSetArg (args[argcount], XmNminWidth, 
  439.                 (XtArgVal) 0);
  440.                     argcount++;
  441. /*
  442.                     XtSetArg (args[argcount], XmNwidth,
  443.                   (XtArgVal) FWIDTH * 100);
  444.                     argcount++;
  445. */
  446.  
  447.             }
  448.               else if ((i == BUTTON_cpu) ||
  449.                    (i == BUTTON_wait) ||
  450.                    (i == BUTTON_mem) ||
  451.                    (i == BUTTON_other) ||
  452.                    (i == BUTTON_cache))
  453.             {
  454.               XtSetArg (args[argcount], XmNminWidth,
  455.                     (XtArgVal) FWIDTH * 29);
  456.               argcount++;
  457.  
  458.               XtSetArg (args[argcount], XmNmaxWidth,
  459.                  (XtArgVal) DisplayWidth (display, screen));
  460.               argcount++;
  461.               XtSetArg (args[argcount], XmNminHeight,
  462.                     (XtArgVal) (FHEIGHT * current_server -> SEPERATE_WINDOWS_LIST[i].Y_mult));
  463.               argcount++;
  464.               XtSetArg (args[argcount], XmNmaxHeight,
  465.                     (XtArgVal) (FHEIGHT * current_server -> SEPERATE_WINDOWS_LIST[i].Y_mult));
  466.               argcount++;
  467.  
  468.               XtSetArg (args[argcount], XmNheight,
  469.                     (XtArgVal) FHEIGHT *
  470.               current_server -> SEPERATE_WINDOWS_LIST[i].Y_mult);
  471.               argcount++;
  472.  
  473.  
  474.             }
  475.               else if (i == BUTTON_tune_var)
  476.             {
  477.               XtSetArg (args[argcount], XmNminHeight,
  478.                     (XtArgVal) (FHEIGHT * current_server -> SEPERATE_WINDOWS_LIST[i].Y_mult));
  479.               argcount++;
  480.               XtSetArg (args[argcount], XmNmaxWidth,
  481.                     (XtArgVal) FWIDTH * 80);
  482.               argcount++;
  483.               XtSetArg (args[argcount], XmNmaxHeight,
  484.                 (XtArgVal) DisplayHeight (display, screen));
  485.               argcount++;
  486.  
  487.             }
  488.               else
  489.             {
  490.               XtSetArg (args[argcount], XmNminHeight,
  491.                     (XtArgVal) (FHEIGHT * current_server -> SEPERATE_WINDOWS_LIST[i].Y_mult));
  492.               argcount++;
  493.               XtSetArg (args[argcount], XmNmaxWidth,
  494.                     (XtArgVal) FWIDTH * 80);
  495.               argcount++;
  496.               XtSetArg (args[argcount], XmNmaxHeight,
  497.                     (XtArgVal) (FHEIGHT * current_server -> SEPERATE_WINDOWS_LIST[i].Y_mult));
  498.               argcount++;
  499.  
  500.             }
  501.  
  502.               XtSetValues (
  503.                     current_server -> SEPERATE_WINDOWS_LIST[i].shell_widget,
  504.                     args, argcount);
  505.  
  506.               adjust_ps_button_offsets (current_server);
  507.  
  508.             }
  509. /*
  510. fprintf(stdout,"Width = %d, Height = %d, border width = %d\n",
  511.             shell_width,
  512.             shell_height,
  513.             shell_border_width);
  514. */
  515.  
  516.           XtResizeWidget (current_server -> SEPERATE_WINDOWS_LIST[i].shell_widget,
  517.                   shell_width + 1,
  518.                   shell_height,
  519.                   shell_border_width);
  520.         }
  521.  
  522.         }
  523.  
  524.  
  525.  
  526.  
  527.       redrawing_entire_DrawArea = 1;
  528.  
  529. /*
  530.    Need to resize the DISPLAY_LIST[?].Y_offset to new values.
  531.    Also need to resize current_Y_offset
  532. */
  533.  
  534.       current_server -> font_change = 1;
  535.  
  536.       draw_display (1, 0);
  537.       update_screen (0, 0);
  538.  
  539.       current_server -> font_change = 0;
  540.  
  541.       redrawing_entire_DrawArea = 0;
  542.  
  543.  
  544.     }
  545.       else
  546.     {
  547.       printf ("XLoadFont failed\n");
  548. #ifdef TESTING
  549.       gct_writelog ("xswLOG");
  550. #endif
  551.       exit (1);
  552.  
  553.     }
  554.  
  555.  
  556.     }
  557.   else
  558.     {
  559.       argcount = 0;
  560.       XtSetArg (args[argcount], XmNset, False);
  561.       argcount++;
  562.       XtSetValues (sub_menu_state_list[first_font_button + font_mode], args,
  563.            argcount);
  564.  
  565.  
  566.       message = XmStringCreateSimple ("Must be connected to a server...");
  567.  
  568.       argcount = 0;
  569.       XtSetArg (args[argcount], XmNmessageString, message);
  570.       argcount++;
  571.       dialog = XmCreateMessageDialog (toplevel, "message", args, argcount);
  572.       XmStringFree (message);
  573.  
  574.       XtUnmanageChild (XmMessageBoxGetChild (dialog, XmDIALOG_HELP_BUTTON));
  575.  
  576.       XtManageChild (dialog);
  577.  
  578.       return (0);
  579.  
  580.  
  581.     }
  582. /*
  583.   printf ("leaving .....change_font22\n");
  584. */
  585.  
  586.   return (1);
  587. }
  588.  
  589. void
  590. check_fonts ()
  591.  
  592. {
  593.   Arg             args[32];
  594.   int             argcount;
  595.   XFontStruct    *info;
  596.   char          **list;
  597.   int             i;
  598.   int             count;
  599.  
  600.   for (i = 0; i < max_font; i++)
  601.     {
  602.  
  603.       list = XListFontsWithInfo (
  604.                   display,
  605.                   font_list[i].font_name,
  606.                   1,
  607.                   &count,
  608.                   &info);
  609.  
  610.       if (count <= 0)
  611.     {
  612.  
  613.       if ((first_font_button + i) > Max_sub_menu_buttons)
  614.         fprintf (stdout, "INTERNAL error # 4\n");
  615.       argcount = 0;
  616.       XtSetArg (args[argcount], XmNsensitive, False);
  617.       argcount++;
  618.       XtSetValues (sub_menu_state_list[first_font_button + i], args,
  619.                argcount);
  620.     }
  621.       else
  622.     {
  623.       if ((first_font_button + i) > Max_sub_menu_buttons)
  624.         fprintf (stdout, "INTERNAL error # 4\n");
  625.       argcount = 0;
  626.       XtSetArg (args[argcount], XmNindicatorType, XmONE_OF_MANY);
  627.       argcount++;
  628.       XtSetValues (sub_menu_state_list[first_font_button + i], args,
  629.                argcount);
  630.     }
  631.  
  632.       XFreeFontInfo (list, info, count);
  633.       if (list != (char **) NULL)
  634.     XFreeFontNames (list);
  635.     }
  636.  
  637. }
  638.  
  639. /*+-------------------------------------------------------------------------
  640.     init_MyFonts()
  641. --------------------------------------------------------------------------*/
  642. void
  643. init_MyFonts (server_pointer)
  644.  
  645.      struct NetworkXswStruct *server_pointer;
  646.  
  647.  
  648. {
  649.  
  650.   Arg             args[32];
  651.   int             argcount;
  652.  
  653.   XFontStruct    *info;
  654.   char          **list;
  655.   int             count;
  656.   int             i;
  657.  
  658.   if (res.font)
  659.     {
  660.  
  661.       server_pointer -> have_res_font = 1;
  662.       server_pointer -> font_name = res.font;
  663.  
  664. /*
  665.  * Might as well set to true now, even if we cannot get font, we will just
  666.  * have to get fixed, and if that fails, we exit....
  667.  */
  668.       if ((first_font_button) > Max_sub_menu_buttons)
  669.     fprintf (stdout, "INTERNAL error # 4\n");
  670.  
  671.  
  672.  
  673.       for (i = first_font_button; i <= last_font_button; i++)
  674.     {
  675.       argcount = 0;
  676.       XtSetArg (args[argcount], XmNset, False);
  677.       argcount++;
  678.       XtSetValues (sub_menu_state_list[i], args, argcount);
  679.     }
  680.  
  681.       argcount = 0;
  682.       XtSetArg (args[argcount], XmNset, True);
  683.       argcount++;
  684.       XtSetValues (sub_menu_state_list[first_font_button], args,
  685.            argcount);
  686.  
  687.  
  688.       list = XListFontsWithInfo (
  689.                   display,
  690.                   res.font,
  691.                   1,
  692.                   &count,
  693.                   &info);
  694.  
  695.       if (count <= 0)
  696.     {
  697.  
  698.       fprintf (stdout, "%s: unable to open font \"%s\", using \"fixed\"....\n",
  699.            xsw_basename, res.font);
  700.       res.font = "fixed";
  701.       server_pointer -> font_name = res.font;
  702.  
  703.       XFreeFontInfo (list, info, count);
  704.       if (list != (char **) NULL)
  705.         XFreeFontNames (list);
  706.  
  707.       list = XListFontsWithInfo (
  708.                       display,
  709.                       res.font,
  710.                       1,
  711.                       &count,
  712.                       &info);
  713.  
  714.       if (count <= 0)
  715.         {
  716.           fprintf (stdout, "%s: unable to open font \"fixed\", Got to go....\n",
  717.                xsw_basename, res.font);
  718.           exit (0);
  719.  
  720.         }
  721.  
  722.       XFreeFontInfo (list, info, count);
  723.  
  724.       if (list != (char **) NULL)
  725.         XFreeFontNames (list);
  726.  
  727.     }
  728.       else
  729.     {
  730.  
  731.  
  732.  
  733.     }
  734.  
  735.  
  736.  
  737.       if ((server_pointer -> My_font = XLoadFont (display, res.font)) != BadName)
  738.     {
  739.       server_pointer -> test_fonts = XQueryFont (display, server_pointer -> My_font);
  740.       XSetFont (display, gc, server_pointer -> My_font);
  741.  
  742.     }
  743.       else
  744.     {
  745.       printf ("XLoadFont failed\n");
  746. #ifdef TESTING
  747.       gct_writelog ("xswLOG");
  748. #endif
  749.       exit (1);
  750.     }
  751.     }
  752.   else
  753.     {
  754.  
  755.       if ((server_pointer -> My_font = XLoadFont (display, "fixed")) != BadName)
  756.     {
  757.       server_pointer -> test_fonts = XQueryFont (display, server_pointer -> My_font);
  758.       XSetFont (display, gc, server_pointer -> My_font);
  759.  
  760.       /*
  761.        * The setting of the SMALL_BOX_WIDTH... is done in "main", after
  762.        * making this call
  763.        */
  764.  
  765.  
  766.     }
  767.       else
  768.     {
  769.       printf ("XLoadFont failed\n");
  770. #ifdef TESTING
  771.       gct_writelog ("xswLOG");
  772. #endif
  773.       exit (1);
  774.     }
  775.  
  776.     }
  777.  
  778.  
  779. }                /* end of init_MyFonts */
  780.  
  781. Pixel
  782. get_color (color_name, secondary_color_name)
  783.      register char  *color_name;
  784.      register char  *secondary_color_name;
  785. {
  786.  
  787.   XrmValue        source, dest;
  788.   Pixel           color_got;
  789.  
  790.   source.size = strlen (color_name) + 1;
  791.   source.addr = color_name;
  792.   dest.size = sizeof (Pixel);
  793.   dest.addr = (caddr_t) & color_got;
  794.  
  795.   if (!XtConvertAndStore (toplevel, XtRString, &source, XtRPixel, &dest))
  796.     {
  797.  
  798.       source.size = strlen (secondary_color_name) + 1;
  799.       source.addr = secondary_color_name;
  800.       dest.size = sizeof (Pixel);
  801.       dest.addr = (caddr_t) & color_got;
  802.  
  803.       if (!XtConvertAndStore (toplevel, XtRString, &source, XtRPixel, &dest))
  804.     {
  805.       if (got_basic_colors)
  806.         {
  807.           fprintf (stdout, "Could not allocate color %s \n", secondary_color_name);
  808.           return (foreground);
  809.         }
  810.       else
  811.         {
  812.           fprintf (stdout, "Could not allocate color %s \n", secondary_color_name);
  813.           return (0);
  814.         }
  815.     }
  816.       else
  817.     {
  818.       return (color_got);
  819.     }
  820.  
  821.     }
  822.   else
  823.     {
  824.       return (color_got);
  825.     }
  826.  
  827. /*
  828.   return (0);
  829. */
  830.  
  831. }
  832.  
  833. /*+-------------------------------------------------------------------------
  834.     init_color()
  835. --------------------------------------------------------------------------*/
  836. void
  837. init_color ()
  838. {
  839.  
  840. #ifdef COLOR_MAP_16
  841.   color_map = DisplayCells (display, screen);
  842.  
  843.  
  844.   if (color_map < 16)
  845.     {
  846.  
  847.       colorBackground.pixel = get_color (res.background, ScoBackground);
  848.       background = colorBackground.pixel;
  849.  
  850.       colorForeground.pixel = get_color ("bull" /* res.foreground */ , ScoForeground);
  851.       foreground = colorForeground.pixel;
  852.  
  853.       colorUser = colorForeground;
  854.       colorKernel = colorForeground;
  855.       colorBreak = colorForeground;
  856.       colorIo = colorForeground;
  857.       colorPio = colorForeground;
  858.       colorSwap = colorForeground;
  859.       colorLabel = colorForeground;
  860.       colorUsers = colorForeground;
  861.       colorTimeOfDay = colorForeground;
  862.       colorInterval = colorForeground;
  863.       colorActualInterval = colorForeground;
  864.       colorNfile = colorForeground;
  865.       colorNinode = colorForeground;
  866.       colorNproc = colorForeground;
  867.       colorNregion = colorForeground;
  868.       colorNfileAlarm = colorForeground;
  869.       colorNinodeAlarm = colorForeground;
  870.       colorNprocAlarm = colorForeground;
  871.       colorNregionAlarm = colorForeground;
  872.       colorNfileWarning = colorForeground;
  873.       colorNinodeWarning = colorForeground;
  874.       colorNprocWarning = colorForeground;
  875.       colorNregionWarning = colorForeground;
  876.       colorTitleBarFG = colorBackground;
  877.       colorTitleBarBG = colorForeground;
  878.  
  879.     }
  880.   else
  881. #endif
  882.     {
  883.  
  884.  
  885.  
  886.       background = get_color (res.background, "ScoBackground");
  887.       foreground = get_color (res.foreground, "ScoForeground");
  888.  
  889.       got_basic_colors = 1;
  890.       /* Begin configurable color parameters.... */
  891.  
  892.       colorUser.pixel = get_color (res.userColor, "ScoForeground");
  893.       colorKernel.pixel = get_color (res.kernelColor, "ScoForeground");
  894.       colorBreak.pixel = get_color (res.breakColor, "ScoForeground");
  895.       colorIo.pixel = get_color (res.ioColor, "ScoForeground");
  896.       colorPio.pixel = get_color (res.pioColor, "ScoForeground");
  897.       colorSwap.pixel = get_color (res.swapColor, "ScoForeground");
  898.       colorLabel.pixel = get_color (res.labelColor, "ScoForeground");
  899.  
  900.       colorMemUsed.pixel = get_color (res.memUsedColor, "ScoForeground");
  901.       colorMemUsedWarning.pixel = get_color (res.memUsedWarningColor, "ScoForeground");
  902.       colorMemUsedAlarm.pixel = get_color (res.memUsedAlarmColor, "ScoForeground");
  903.  
  904.       colorSwapUsed.pixel = get_color (res.swapUsedColor, "ScoForeground");
  905.       colorSwapUsedWarning.pixel = get_color (res.swapUsedWarningColor, "ScoForeground");
  906.       colorSwapUsedAlarm.pixel = get_color (res.swapUsedAlarmColor, "ScoForeground");
  907.  
  908.       colorAvailSwapUsed.pixel = get_color (res.availSwapUsedColor, "ScoForeground");
  909.       colorAvailSwapUsedWarning.pixel = get_color (res.availSwapUsedWarningColor, "ScoForeground");
  910.       colorAvailSwapUsedAlarm.pixel = get_color (res.availSwapUsedAlarmColor, "ScoForeground");
  911.  
  912.       colorDisplayMsg.pixel = get_color (res.DisplayMessagesColor, "ScoForeground");
  913.       colorTitleBarFG.pixel = get_color (res.title_barfgColor, "ScoForeground");
  914.       colorTitleBarBG.pixel = get_color (res.title_barbgColor, "ScoBackground");
  915.       colorNfile.pixel = get_color (res.nfileColor, "ScoForeground");
  916.       colorNinode.pixel = get_color (res.ninodeColor, "ScoForeground");
  917.       colorNproc.pixel = get_color (res.nprocColor, "ScoForeground");
  918.       colorNregion.pixel = get_color (res.nregionColor, "ScoForeground");
  919.       colorNcblocks.pixel = get_color (res.ncblocksColor, "ScoForeground");
  920.       colorNfileAlarm.pixel = get_color (res.nfileAlarmColor, "ScoForeground");
  921.       colorNinodeAlarm.pixel = get_color (res.ninodeAlarmColor, "ScoForeground");
  922.       colorNprocAlarm.pixel = get_color (res.nprocAlarmColor, "ScoForeground");
  923.       colorNregionAlarm.pixel = get_color (res.nregionAlarmColor, "ScoForeground");
  924.       colorNcblocksAlarm.pixel = get_color (res.ncblocksAlarmColor, "ScoForeground");
  925.       colorNfileWarning.pixel = get_color (res.nfileWarningColor, "ScoForeground");
  926.       colorNinodeWarning.pixel = get_color (res.ninodeWarningColor, "ScoForeground");
  927.       colorNprocWarning.pixel = get_color (res.nprocWarningColor, "ScoForeground");
  928.       colorNregionWarning.pixel = get_color (res.nregionWarningColor, "ScoForeground");
  929.       colorNcblocksWarning.pixel = get_color (res.ncblocksWarningColor, "ScoForeground");
  930.       colorTimeOfDay.pixel = get_color (res.TimeOfDayColor, "ScoForeground");
  931.       colorUsers.pixel = get_color (res.UsersColor, "ScoForeground");
  932.       colorInterval.pixel = get_color (res.IntervalColor, "ScoForeground");
  933.       colorActualInterval.pixel = get_color (res.ActualIntervalColor, "ScoForeground");
  934.       colorActualIntervalWarning.pixel =
  935.     get_color (res.ActualIntervalWarningColor, "ScoForeground");
  936.       colorActualIntervalAlarm.pixel =
  937.     get_color (res.ActualIntervalAlarmColor, "ScoForeground");
  938.  
  939.       colorCacheWriteHit.pixel = get_color (res.cache_write_hit_color, "ScoForeground");
  940.       colorCacheReadHit.pixel = get_color (res.cache_read_hit_color, "ScoForeground");
  941.       colorCacheWriteMiss.pixel = get_color (res.cache_write_miss_color, "ScoForeground");
  942.       colorCacheReadMiss.pixel = get_color (res.cache_read_miss_color, "ScoForeground");
  943.       colorCacheWriteMissWarning.pixel = get_color (res.cache_write_miss_warning_color, "ScoForeground");
  944.       colorCacheReadMissWarning.pixel = get_color (res.cache_read_miss_warning_color, "ScoForeground");
  945.       colorCacheWriteMissAlarm.pixel = get_color (res.cache_write_miss_alarm_color, "ScoForeground");
  946.       colorCacheReadMissAlarm.pixel = get_color (res.cache_read_miss_alarm_color, "ScoForeground");
  947.  
  948.       colorPSmem.pixel = get_color (res.PS_mem_Color, "ScoForeground");
  949.       colorPSmemGrowing.pixel = get_color (res.PS_mem_growing_Color, "ScoForeground");
  950.       colorPSmemShrinking.pixel = get_color (res.PS_mem_shrinking_Color, "ScoForeground");
  951.       colorPSmemNew.pixel = get_color (res.PS_mem_new_Color, "ScoForeground");
  952.  
  953.       colorPScpuIdle.pixel = get_color (res.PS_cpu_idle_Color, "ScoForeground");
  954.       colorPScpuActive.pixel = get_color (res.PS_cpu_active_Color, "ScoForeground");
  955.       colorPScpuNew.pixel = get_color (res.PS_cpu_new_Color, "ScoForeground");
  956.       colorPScpuRunning.pixel = get_color (res.PS_cpu_running_Color, "ScoForeground");
  957.  
  958.       colorPSioIdle.pixel = get_color (res.PS_io_idle_Color, "ScoForeground");
  959.       colorPSioActive.pixel = get_color (res.PS_io_active_Color, "ScoForeground");
  960.       colorPSioNew.pixel = get_color (res.PS_io_new_Color, "ScoForeground");
  961.  
  962.  
  963.       colorDiskspaceLosing.pixel = 
  964.         get_color (res.disk_space_losing_Color, "ScoForeground");
  965.       colorDiskspaceGaining.pixel = 
  966.         get_color (res.disk_space_gaining_Color, "ScoForeground");
  967.       colorDiskspaceStable.pixel = 
  968.         get_color (res.disk_space_stable_Color, "ScoForeground");
  969.  
  970.  
  971.  
  972.       colorAuxButtonOnForeground.pixel = get_color (res.auxButtonOnFG, "ScoForeground");
  973.       colorAuxButtonOnBackground.pixel = get_color (res.auxButtonOnBG, "ScoBackground");
  974.       colorAuxButtonOffForeground.pixel = get_color (res.auxButtonOffFG, "ScoForeground");
  975.       colorAuxButtonOffBackground.pixel = get_color (res.auxButtonOffBG, "ScoBackground");
  976.  
  977.  
  978.       colorNumeric.pixel = get_color (res.numericColor, "ScoForeground");
  979.       colorNumericWarning.pixel = get_color (res.numericWarningColor, "ScoForeground");
  980.       colorNumericAlarm.pixel = get_color (res.numericAlarmColor, "ScoForeground");
  981.       colorStaticNumeric.pixel = get_color (res.staticNumericColor, "ScoForeground");
  982.  
  983.     }
  984.  
  985.  
  986. }                /* end of init_color */
  987.  
  988. /* vi: set tabstop=4 shiftwidth=4: */
  989. /* end of xprocs.c */
  990.